home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Comm / AmiTCP30b2.lha / src / appl / napsaterm / tel_subneg.c < prev    next >
C/C++ Source or Header  |  1994-05-14  |  1KB  |  68 lines

  1. /*
  2.  * $Id: tel_subneg.c,v 3.1 1994/05/14 14:17:07 ppessi Exp $
  3.  *
  4.  * Author: Tomi Ollila <too@cs.hut.fi>
  5.  *
  6.  * Copyright © 1993, 1994   AmiTCP/IP Group, <amitcp-group@hut.fi>
  7.  *                Helsinki University of Technology, Finland.
  8.  *                All rights reserved.
  9.  *
  10.  * Created: Thu Apr  7 18:45:42 1994 too
  11.  * Last modified: Fri May 13 02:42:26 1994 ppessi
  12.  *
  13.  * HISTORY
  14.  * $Log: tel_subneg.c,v $
  15.  * Revision 3.1  1994/05/14  14:17:07  ppessi
  16.  * initial revision
  17.  *
  18.  * Revision 3.1  1994/04/17  11:31:54  too
  19.  * initial revision
  20.  *
  21.  */
  22.  
  23. #include "telnet.h"
  24. #include <arpa/telnet.h>
  25. #include "tel_subneg.h"
  26. #include "tel_iacout.h"
  27. #include "napsaprefs.h"
  28.  
  29. int subneg(u_char c)
  30. {
  31.   static enum { sb_start, sb_end, sb_end_2, sb_terminal, } substate = sb_start;
  32.  
  33.   switch (substate) {
  34.   case sb_start:
  35.     switch (c) {
  36.     case TELOPT_TTYPE:
  37.       substate = sb_terminal;
  38.       break;
  39.     default:
  40.       return TRUE;
  41.     }
  42.     break;
  43.  
  44.   case sb_terminal:
  45.     if (c == TELQUAL_SEND) {
  46.       putiacstring(TELOPT_TTYPE, 
  47.            np.remoteterm ? np.remoteterm : termnames[np.emulation]);
  48.     }
  49.     substate = sb_end;
  50.     break;
  51.  
  52.   case sb_end:
  53.     if (c == IAC) {
  54.       substate = sb_end_2;
  55.     }
  56.     break;
  57.  
  58.   case sb_end_2:
  59.     if (c == SE) {
  60.       substate = sb_start;
  61.       return TRUE;
  62.     }
  63.     break;
  64.   }
  65.  
  66.   return FALSE;
  67. }
  68.